package fiuba.algo3.persistencia;

import java.util.List;

import fiuba.algo3.Perfil;
import fiuba.algo3.Sospechoso;
import fiuba.algo3.XMLProcessor.nucleo.NodoXML;

public abstract class ConstructorSospechoso
{
	public static final String CLASE = "Sospechoso";

	private static boolean puedeSerConstruido(NodoXML nodo)
	{
		return nodo.nombre().equals("objeto") &&
				nodo.obtenerValorAtributo("clase").equals(CLASE);
	}

	public static Sospechoso construir(NodoXML nodoObjetoSospechoso)
	{
		if (!puedeSerConstruido(nodoObjetoSospechoso)) return null;

		List<NodoXML> tablaValores = nodoObjetoSospechoso.obtenerHijos();

		String nombre = "";
		Perfil perfil = new Perfil("", "", "", "", "");

		for (NodoXML nodo : tablaValores)
		{
			if (nodo.nombre().equals("campo"))
				{
					String valor = nodo.obtenerValorAtributo("nombre");
					if (valor.equals("nombre"))
						nombre = (String)ConstructorPrimitivos.construir(nodo.obtenerPrimogenito());
					else if (valor.equals("perfil"))
						perfil = ConstructorPerfil.construir(nodo.obtenerPrimogenito());
				}
		}

		return new Sospechoso(nombre, perfil);
	}

	public static Sospechoso[] construir(List<NodoXML> listaNodosSospechosos)
	{
		int cantidadElementos = listaNodosSospechosos.size();
		Sospechoso[] listaSospechosos = new Sospechoso[cantidadElementos];

		for (int i = 0; i < cantidadElementos; i++)
			listaSospechosos[i] = construir(listaNodosSospechosos.get(i));

		return listaSospechosos;
	}

}
